package com.powernode.controller;


import com.powernode.common.Result;
import com.powernode.domain.SysDept;
import com.powernode.enums.ResultEnums;
import com.powernode.service.SysDeptService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/sysDept")
public class SysDeptController extends BaseController{
    @Resource
    private SysDeptService sysDeptService;

    /**
     * 查询所有部门
     * GET http://127.0.0.1:8080/sysDept/listDept
     * 接口ID：60111878
     * 接口地址：https://www.apifox.cn/web/project/{{projectId}}/apis/api-{{id}}
     */
    @GetMapping("/listDept")
    public Result<?> listDept(SysDept sysDept){
        List<SysDept> sysDeptList=sysDeptService.queryAllDeptList(sysDept);
        return new Result<>(sysDeptList);
    }

    /**
     * 添加部门
     * POST http://127.0.0.1:8080/sysDept/save
     * 接口ID：60111880
     * 接口地址：https://www.apifox.cn/web/project/{{projectId}}/apis/api-{{id}}
     */
    @PostMapping("save")
    public Result<?> save(@RequestBody SysDept sysDept){
        //创建时间
        sysDept.setCreateTime(new Date());
        sysDept.setCreateBy(getUsername());
        sysDeptService.insertSelective(sysDept);
        return new Result("添加成功");
    }

    /**
     * 修改部门
     * PUT http://127.0.0.1:8080/sysDept/update
     * 接口ID：43445079
     * 接口地址：https://www.apifox.cn/web/project/{{projectId}}/apis/api-{{id}}
     */
    @PutMapping("update")
    public Result update(@RequestBody SysDept dept){
        //修改时间
        dept.setUpdateTime(new Date());
        dept.setUpdateBy(getUsername());
        sysDeptService.updateByPrimaryKeySelective(dept);
        return new Result("修改成功");
    }

    /**
     * 根据ID查询部门
     * GET http://127.0.0.1:8080/sysDept/get/{deptId}
     * 接口ID：43445081
     * 接口地址：https://www.apifox.cn/web/project/{{projectId}}/apis/api-{{id}}
     */
    @GetMapping("get/{deptId}")
    public Result get(@PathVariable Long deptId){
        SysDept sysDept = sysDeptService.selectByPrimaryKey(deptId);
        return new Result(sysDept);
    }

    /**
     * 删除部门
     * DELETE http://127.0.0.1:8080/sysDept/delete/{deptId}
     * 接口ID：43445080
     * 接口地址：https://www.apifox.cn/web/project/{{projectId}}/apis/api-{{id}}
     */
    @DeleteMapping("delete/{deptId}")
    public Result delete(@PathVariable Long deptId){
        //根据deptId查询这个deptId下面子节点个数[使用deptId传后数据库查询有没有parentId=这个deptId条数，如果条数大于0 就说明这个deptId下面有子节点]
        Integer count=sysDeptService.queryChildrenCountByDeptId(deptId);
        if(count>0){
            return new Result(ResultEnums.ERROR,"当前部门下面有子部门，请先删除子部门");
        }
        sysDeptService.deleteByPrimaryKey(deptId);
        return new Result("删除成功");
    }
}
